package me.magicall.test.type.name;

import java.lang.reflect.Field;
import java.util.Arrays;

/*
 * 本包用于测试名字中包含$符号的情况。
 */
public class A {

	// A$B类、A类的静态内部类B、A的非静态内部类	是同名的，取消下面这个注释就会产生编译错误
//	static class B {
//
//	}

	class B {
		int f;
	}

	public static void main(final String[] args) throws Exception {
		//这个class是A的非静态内部类B的class，不是另一个类A$B的class。
		final Class<?> classB = B.class;
		System.out.println("@@@@@@" + classB);

		final A a = new A();
		//我们不能直接new一个B类对象，因为它是个非静态的类
//		B b=new B();
		//这是new B类对象的方法
		@SuppressWarnings("unused")
		final B b = a.new B();

		final Field[] fieldsOfB = classB.getDeclaredFields();
		System.out.println("@@@@@@" + Arrays.toString(fieldsOfB));
		for (final Field f : fieldsOfB) {
			System.out.println("@@@@@@" + f.getType());
		}
	}
}
